<?php
//启动框架的核心类
class C49{
	//类外部执行方法
	public static function run(){
		//1.定义常量，用于组合路径
		self::setConst();
		//2.创建用户所需的文件夹
		self::createDir();
		//3.载入框架核心文件 
		self::loadCore();
		//4.执行应用类
		App::run();
	}
	
	//定义常量
	private static function setConst(){
		//为了让组合的路径能在linux和windows下都正常运行，因此要把\转化成/.
		$path=str_replace('\\', '/', __FILE__);
		//定义框架目录
		define('C49_PATH', dirname($path));
		//定义根目录
		define('ROOT_PATH', dirname(C49_PATH));
//		echo ROOT_PATH;


        /*
		 *  组合载入文件的路径 
		 */
		//定义Lib路径
        define('LIB_PATH', C49_PATH.'/Lib');
        //定义Lib下面Core路经
        define('CORE_PATH', LIB_PATH.'/Core');
		//定义Lib下面Function路经
		define('FUNCTION_PATH', LIB_PATH.'/Function');
        
       
        /*
		 * 组合创建文件夹路径
		 */
        //定义应用目录
        define('APP_PATH', ROOT_PATH.'/'.APP_NAME);
		//定义控制器目录controller路径,以便于创建文件夹 
		define('APP_CONTROLLER_PATH', APP_PATH.'/Controller');
//		echo APP_CONTROLLER_PATH;
		//定义配置项Config目录
		define('APP_CONFIG_PATH', APP_PATH.'/Config');
		//定义视图View目录
		define('APP_VIEW_PATH', APP_PATH.'/View');
		if(empty($_POST)){
			define('IS_POST', false);
		}else{
			define('IS_POST', true);
		}
	}
	
//	创建用户 所需的文件夹（路径由定义的常量来组合）
	private static function createDir(){
		//需要创建的文件夹有可能有多个，因此创建成数组的形式
		$dirArr=array(
		 APP_PATH,
		 APP_CONTROLLER_PATH,
		 APP_CONFIG_PATH,
		 APP_VIEW_PATH
		);
		//循环数组，依次全部创建
		foreach ($dirArr as $v) {
			is_dir($v) || mkdir($v,0777,true);
		}
		
	}
	
	//载入框架核心文件
	private static function loadCore(){
		//因为载入的文件有可能不止一个，所以写成数组，以便依次全部载入
		//因为载入文件需要正确的路经，因此还需要在常量中定义组合路径
		$coerArr=array(
		  //载入APP类
		  CORE_PATH.'/App.class.php',
		  //载入总控制器
		  CORE_PATH.'/Controller.class.php',
		  //载入function函数
		  FUNCTION_PATH.'/functions.php',
		);
		foreach ($coerArr as $v) {
			require_once $v;
		}
	}
	
}


C49::run();




?>